﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Inmobiliaria.Services.Core.DTO;
using System.Data.SqlClient;
using System.Data;
using System.IO;
using MySql.Data.MySqlClient;

namespace Inmobiliaria.Data
{
    public class DaoConsultaVentaInmueble
    {
        MySql.Data.MySqlClient.MySqlConnection connection = new MySqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["INMOBILIARIA"].ConnectionString);
        public List<Services.Core.DTO.DtoListaInmueble> ConsultarVentasInmueblesPorCodigo(Core.Filtros.FiltroConsultaVenta filtro)
        {
            int? CodigoInmueble = filtro.idInmueble;
            List<DtoListaInmueble> lista = new List<DtoListaInmueble>();
            DataTable dt = new DataTable();
            connection.Open();
            MySqlParameter[] oParam = {
                                      new MySqlParameter("IdInmueble_in", CodigoInmueble)};


            string proceso = "BuscarInmueble";
            MySqlDataAdapter da = new MySqlDataAdapter(proceso, connection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.AddRange(oParam);
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                DtoListaInmueble li = new DtoListaInmueble();
                int provincia = li.Provincia;
                DataSet ds = new DataSet();
                da.Fill(ds, "tinmueble");
                foreach (DataRow item in ds.Tables[0].Rows)
                {
                    DtoListaInmueble dtoLista = new DtoListaInmueble();
                    dtoLista.Agua = item["txAgua"].ToString();
                    dtoLista.Altura = item["txAltura"].ToString();
                    dtoLista.Asfalto = item["txAsfalto"].ToString();
                    dtoLista.Balcon = item["txBalcon"].ToString();
                    dtoLista.Baños = item["txBano"].ToString();
                    dtoLista.Barrio = int.Parse(item["idBarrio"].ToString());
                    dtoLista.Calle = item["txCalle"].ToString();
                    dtoLista.Cloacas = item["txClocas"].ToString();
                    dtoLista.Cocina = item["txCocina"].ToString();
                    dtoLista.Comedor = item["txComedor"].ToString();
                    dtoLista.Descripcion = item["txDescripcion"].ToString();
                    // dtoLista.Dolar = item["txDolar"].ToString();
                    dtoLista.Gas = item["txGas"].ToString();
                    dtoLista.Habitaciones = item["txHabitaciones"].ToString();
                    // dtoLista.id = int.Parse(item["txid"].ToString());
                    dtoLista.Jardin = item["txJardin"].ToString();
                    dtoLista.Living = item["txLiving"].ToString();
                    dtoLista.Localidad = int.Parse(item["idLocalidad"].ToString());
                    dtoLista.Lote = item["txLote"].ToString();
                    dtoLista.Luz = item["txLuz"].ToString();
                    //dtoLista.Parrilla = item["txParrilla"].ToString();
                    dtoLista.Patio = item["txPatio"].ToString();
                    // dtoLista.Pesos = item["txPesos"].ToString();
                    dtoLista.Provincia = int.Parse(item["idProvincia"].ToString());
                    dtoLista.Quincho = item["txQuincho"].ToString();
                    dtoLista.SuperficieCubierta = item["txSuperficieCubierta"].ToString();
                    dtoLista.TelefonoInmueble = item["txTelefonoInmueble"].ToString();
                    dtoLista.Terraza = item["txTerraza"].ToString();
                    dtoLista.TipoInmueble = int.Parse(item["idTipoInmueble"].ToString());
                    dtoLista.TipoMoneda = item["txTipoMoneda"].ToString();
                    dtoLista.Transaccion = item["txTipoTransaccion"].ToString();
                    dtoLista.ValorInmueble = item["txValorInmueble"].ToString();
                    //dtoLista.Vendedor = item["txVendedor"].ToString();
                    dtoLista.IdInmueble = int.Parse(item["idInmueble"].ToString());
                    string a = (item["idPersona"].ToString()) == "" ? "0" : (item["idPersona"].ToString());
                    dtoLista.IdPersona = int.Parse(a);
                    string b = (item["idInmobiliaria"].ToString()) == "" ? "0" : (item["idInmobiliaria"].ToString());
                    dtoLista.idInmobiliaria = int.Parse(b);
                    dtoLista.NombreProvincia = BuscoNombreProvincia(dtoLista.Provincia);
                    dtoLista.NombreLocalidad = BuscoNombreLocalidad(dtoLista.Localidad);
                    dtoLista.NombreBarrio = BuscoNombreBarrio(dtoLista.Barrio);
                    dtoLista.TipoVendedor = BuscoTipoVendedor(dtoLista.IdPersona, dtoLista.idInmobiliaria);
                    // dtoLista.NombreInmobiliaria = BuscoNombreInmobiliaria(dtoLista.idInmobiliaria);

                    lista.Add(dtoLista);
                }
            }
            connection.Close();
            return lista;
        }
        public List<Services.Core.DTO.DtoListaInmueble> ConsultarVentasInmuebles(Core.Filtros.FiltroConsultaVenta filtro)
        {
            List<DtoListaInmueble> lista = new List<DtoListaInmueble>();
            DataTable dt = new DataTable();
            connection.Open();
            MySqlParameter[] oParam = {
                                      new MySqlParameter("TipoTransaccion_in", filtro.idTransaccion),
                                      new MySqlParameter("TipoInmueble_in", filtro.idInmueble),
                                      new MySqlParameter("Habitaciones_in", filtro.Dormitorios),
                                      new MySqlParameter("Provincia_in", filtro.idProvincia),
                                      new MySqlParameter("Localidad_in", filtro.idLocalidad),
                                      new MySqlParameter("Barrio_in", filtro.idBarrio)};

            string proceso = "ConsultarVentas";
            MySqlDataAdapter da = new MySqlDataAdapter(proceso, connection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.AddRange(oParam);
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                DtoListaInmueble li = new DtoListaInmueble();
                int provincia = li.Provincia;
                DataSet ds = new DataSet();
                //MySqlDataAdapter da = new MySqlDataAdapter("Select * FROM tinmueble", connection);
                da.Fill(ds, "tinmueble");
                foreach (DataRow item in ds.Tables[0].Rows)
                {
                    DtoListaInmueble dtoLista = new DtoListaInmueble();
                    dtoLista.Agua = item["txAgua"].ToString();
                    dtoLista.Altura = item["txAltura"].ToString();
                    dtoLista.Asfalto = item["txAsfalto"].ToString();
                    dtoLista.Balcon = item["txBalcon"].ToString();
                    dtoLista.Baños = item["txBano"].ToString();
                    dtoLista.Barrio = int.Parse(item["idBarrio"].ToString());
                    dtoLista.Calle = item["txCalle"].ToString();
                    dtoLista.Cloacas = item["txClocas"].ToString();
                    dtoLista.Cocina = item["txCocina"].ToString();
                    dtoLista.Comedor = item["txComedor"].ToString();
                    dtoLista.Descripcion = item["txDescripcion"].ToString();
                    // dtoLista.Dolar = item["txDolar"].ToString();
                    dtoLista.Gas = item["txGas"].ToString();
                    dtoLista.Habitaciones = item["txHabitaciones"].ToString();
                    // dtoLista.id = int.Parse(item["txid"].ToString());
                    dtoLista.Jardin = item["txJardin"].ToString();
                    dtoLista.Living = item["txLiving"].ToString();
                    dtoLista.Localidad = int.Parse(item["idLocalidad"].ToString());
                    dtoLista.Lote = item["txLote"].ToString();
                    dtoLista.Luz = item["txLuz"].ToString();
                    //dtoLista.Parrilla = item["txParrilla"].ToString();
                    dtoLista.Patio = item["txPatio"].ToString();
                    // dtoLista.Pesos = item["txPesos"].ToString();
                    dtoLista.Provincia = int.Parse(item["idProvincia"].ToString());
                    dtoLista.Quincho = item["txQuincho"].ToString();
                    dtoLista.SuperficieCubierta = item["txSuperficieCubierta"].ToString();
                    dtoLista.TelefonoInmueble = item["txTelefonoInmueble"].ToString();
                    dtoLista.Terraza = item["txTerraza"].ToString();
                    dtoLista.TipoInmueble = int.Parse(item["idTipoInmueble"].ToString());
                    dtoLista.TipoMoneda = item["txTipoMoneda"].ToString();
                    dtoLista.Transaccion = item["txTipoTransaccion"].ToString();
                    dtoLista.ValorInmueble = item["txValorInmueble"].ToString();
                    //dtoLista.Vendedor = item["txVendedor"].ToString();
                    dtoLista.IdInmueble = int.Parse(item["idInmueble"].ToString());
                    string a = (item["idPersona"].ToString()) == "" ? "0" : (item["idPersona"].ToString());
                    dtoLista.IdPersona = int.Parse(a);
                    string b = (item["idInmobiliaria"].ToString()) == "" ? "0" : (item["idInmobiliaria"].ToString());
                    dtoLista.idInmobiliaria = int.Parse(b);
                    dtoLista.NombreProvincia = BuscoNombreProvincia(dtoLista.Provincia);
                    dtoLista.NombreLocalidad = BuscoNombreLocalidad(dtoLista.Localidad);
                    dtoLista.NombreBarrio = BuscoNombreBarrio(dtoLista.Barrio);
                    dtoLista.TipoVendedor = BuscoTipoVendedor(dtoLista.IdPersona, dtoLista.idInmobiliaria);
                    // dtoLista.NombreInmobiliaria = BuscoNombreInmobiliaria(dtoLista.idInmobiliaria);

                    lista.Add(dtoLista);
                }
            }
            connection.Close();
            return lista;
        }
        public string BuscoTipoVendedor(int p, int p_2)
        {
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = connection;
            if (p != 0)
            {
                cmd.CommandText = "Select txTipoVendedor From tPersonas where idPersona = '" + p + "'";
                string TipoVendedor = (string)cmd.ExecuteScalar();
                //connection.Close();
                return TipoVendedor;
            }
            else
            {
                //MySqlCommand cmd1 = new MySqlCommand();
                //cmd1.Connection = connection;
                cmd.CommandText = "Select txNombreInmobiliaria From tInmobiliarias where idInmobiliaria = '" + p_2 + "'";
                string NombreInmobiliaria = (string)cmd.ExecuteScalar();
                //  connection.Close();
                if (NombreInmobiliaria != "")
                {
                    return NombreInmobiliaria = "INMOBILIARIA";
                }
                return NombreInmobiliaria = "INMOBILIARIA";
            }
        }
        public string BuscoNombreProvincia(int p)
        {
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = connection;
            cmd.CommandText = "Select txNombre From tProvincias where idProvincia = '" + p + "'";
            string NombreProvincia = (string)cmd.ExecuteScalar();
            //connection.Close();
            return NombreProvincia;
        }
        public string BuscoNombreLocalidad(int p)
        {
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = connection;
            cmd.CommandText = "Select txNombre From tLocalidades where idLocalidad = '" + p + "'";
            string NombreLocalidad = (string)cmd.ExecuteScalar();
            //connection.Close();
            return NombreLocalidad;
        }
        private string BuscoNombreBarrio(int p)
        {
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = connection;
            cmd.CommandText = "Select txNombre From tBarrios where idBarrio = '" + p + "'";
            string NombreBarrio = (string)cmd.ExecuteScalar();
            //connection.Close();
            return NombreBarrio;
        }
        public DtoListaInmueble TraerInmueble(int idInmueble)
        {
            DtoListaInmueble inmueble = new DtoListaInmueble();
            DataTable dt = new DataTable();
            connection.Open();
            MySqlParameter[] oParam = {
                                          new MySqlParameter("idInmueble_in", idInmueble)};
            string proceso = "BuscarInmueble";
            MySqlDataAdapter da = new MySqlDataAdapter(proceso, connection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.AddRange(oParam);
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                DataSet ds = new DataSet();
                da.Fill(ds, "tinmueble");
                foreach (DataRow item in ds.Tables[0].Rows)
                {
                    DtoListaInmueble dtoLista = new DtoListaInmueble();
                    dtoLista.Agua = item["txAgua"].ToString();
                    dtoLista.Altura = item["txAltura"].ToString();
                    dtoLista.Asfalto = item["txAsfalto"].ToString();
                    dtoLista.Balcon = item["txBalcon"].ToString();
                    dtoLista.Baños = item["txBano"].ToString();
                    dtoLista.Barrio = int.Parse(item["idBarrio"].ToString());
                    dtoLista.Calle = item["txCalle"].ToString();
                    dtoLista.Cloacas = item["txClocas"].ToString();
                    dtoLista.Cocina = item["txCocina"].ToString();
                    dtoLista.Comedor = item["txComedor"].ToString();
                    dtoLista.Descripcion = item["txDescripcion"].ToString();
                    // dtoLista.Dolar = item["txDolar"].ToString();
                    dtoLista.Gas = item["txGas"].ToString();
                    dtoLista.Habitaciones = item["txHabitaciones"].ToString();
                    // dtoLista.id = int.Parse(item["txid"].ToString());
                    dtoLista.Jardin = item["txJardin"].ToString();
                    dtoLista.Living = item["txLiving"].ToString();
                    dtoLista.Localidad = int.Parse(item["idLocalidad"].ToString());
                    dtoLista.Lote = item["txLote"].ToString();
                    dtoLista.Luz = item["txLuz"].ToString();
                    //dtoLista.Parrilla = item["txParrilla"].ToString();
                    dtoLista.Patio = item["txPatio"].ToString();
                    // dtoLista.Pesos = item["txPesos"].ToString();
                    dtoLista.Provincia = int.Parse(item["idProvincia"].ToString());
                    dtoLista.Quincho = item["txQuincho"].ToString();
                    dtoLista.SuperficieCubierta = item["txSuperficieCubierta"].ToString();
                    dtoLista.TelefonoInmueble = item["txTelefonoInmueble"].ToString();
                    dtoLista.Terraza = item["txTerraza"].ToString();
                    dtoLista.TipoInmueble = int.Parse(item["idTipoInmueble"].ToString());
                    dtoLista.TipoMoneda = item["txTipoMoneda"].ToString();
                    dtoLista.Transaccion = item["txTipoTransaccion"].ToString();
                    dtoLista.ValorInmueble = item["txValorInmueble"].ToString();
                    //dtoLista.Vendedor = item["txVendedor"].ToString();
                    dtoLista.IdInmueble = int.Parse(item["idInmueble"].ToString());
                    string a = (item["idPersona"].ToString()) == "" ? "0" : (item["idPersona"].ToString());
                    dtoLista.IdPersona = int.Parse(a);
                    string b = (item["idInmobiliaria"].ToString()) == "" ? "0" : (item["idInmobiliaria"].ToString());
                    dtoLista.idInmobiliaria = int.Parse(b);
                    dtoLista.NombreProvincia = BuscoNombreProvincia(dtoLista.Provincia);
                    dtoLista.NombreLocalidad = BuscoNombreLocalidad(dtoLista.Localidad);
                    dtoLista.NombreBarrio = BuscoNombreBarrio(dtoLista.Barrio);
                    dtoLista.TipoVendedor = BuscoTipoVendedor(dtoLista.IdPersona, dtoLista.idInmobiliaria);
                    // dtoLista.NombreInmobiliaria = BuscoNombreInmobiliaria(dtoLista.idInmobiliaria);
                    connection.Close();
                    return inmueble = dtoLista;
                    // inmueble.Add(dtoLista);
                }
            }
            return inmueble;
        }
        public List<Services.Core.DTO.DtoImagenes> BuscarImagenesInmueble(int idInmueble)
        {
            List<DtoImagenes> listaImagenes = new List<DtoImagenes>();
            DataTable dt = new DataTable();
            connection.Open();
            MySqlParameter[] oParam = {
                                          new MySqlParameter("idInmueble_in", idInmueble)};
            string proceso = "BuscarImagenesInmueble";
            MySqlDataAdapter da = new MySqlDataAdapter(proceso, connection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.AddRange(oParam);
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {

                DataSet ds = new DataSet();
                da.Fill(ds, "timagenes");
                foreach (DataRow item in ds.Tables[0].Rows)
                {
                    DtoImagenes dtoImagenes = new DtoImagenes();
                    dtoImagenes.Imagen = (byte[])item["Imagen"];
                    // dtoImagenes.idImagen = int.Parse(item["idImagen"].ToString());
                    //   dtoImagenes.Imagen = byte.Parse(item["Imagen"].ToString());
                    //dtoImagenes.Imagen = BuscarImagen(dtoImagenes.idImagen);
                    listaImagenes.Add(dtoImagenes);
                }
            }
            return listaImagenes;


        }
        public DtoPersona BuscarDatosPersonales(int idPersona)
        {
            DtoPersona persona = new DtoPersona();
            DataTable dt = new DataTable();
            connection.Open();
            MySqlParameter[] oParam = {
                                          new MySqlParameter("idPersona_in", idPersona)};
            string proceso = "BuscarDatosPersonales";
            MySqlDataAdapter da = new MySqlDataAdapter(proceso, connection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.AddRange(oParam);
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                DataSet ds = new DataSet();
                da.Fill(ds, "tpersonas");
                foreach (DataRow item in ds.Tables[0].Rows)
                {
                    DtoPersona dtoPersona = new DtoPersona();
                    dtoPersona.CodTelefono = item["txCodTelefono"].ToString();
                    dtoPersona.Telefono = item["txTelefono"].ToString();
                    dtoPersona.CodCelular = item["txCodCelular"].ToString();
                    dtoPersona.Celular = item["txCelular"].ToString();
                    dtoPersona.Email = item["txEmail"].ToString();
                    connection.Close();
                    return persona = dtoPersona;
                    // inmueble.Add(dtoLista);
                }
            }
            return persona;
        }
        public DtoInmobiliaria BuscarDatosInmobiliaria(int idInmobiliaria)
        {
            DtoInmobiliaria inmobiliaria = new DtoInmobiliaria();
            DataTable dt = new DataTable();
            connection.Open();
            MySqlParameter[] oParam = {
                                          new MySqlParameter("idinmobiliaria_in", idInmobiliaria)};
            string proceso = "BuscarDatosInmobiliaria";
            MySqlDataAdapter da = new MySqlDataAdapter(proceso, connection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.AddRange(oParam);
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                DataSet ds = new DataSet();
                da.Fill(ds, "tinmobiliarias");
                foreach (DataRow item in ds.Tables[0].Rows)
                {
                    DtoInmobiliaria dtoInmobiliaria = new DtoInmobiliaria();
                    dtoInmobiliaria.NombreInmobiliaria = item["txNombreInmobiliaria"].ToString();
                    dtoInmobiliaria.CodTelefono = item["txCodTelefono"].ToString();
                    dtoInmobiliaria.Telefono = item["txTelefono"].ToString();
                    dtoInmobiliaria.CodTelefono2 = item["txCodTelefono2"].ToString();
                    dtoInmobiliaria.Telefono2 = item["txTelefono2"].ToString();
                    dtoInmobiliaria.CodCelular = item["txCodCelular"].ToString();
                    dtoInmobiliaria.Celular = item["txCelular"].ToString();
                    dtoInmobiliaria.CodCelular2 = item["txCodCelular2"].ToString();
                    dtoInmobiliaria.Celular2 = item["txCelular2"].ToString();
                    dtoInmobiliaria.Email = item["txEmail"].ToString();
                    dtoInmobiliaria.Facebook = item["txFacebook"].ToString();
                    dtoInmobiliaria.SitioWeb = item["txSitioWeb"].ToString();
                    dtoInmobiliaria.Calle = item["txCalle"].ToString();
                    dtoInmobiliaria.Altura = item["txAltura"].ToString();
                    connection.Close();
                    return inmobiliaria = dtoInmobiliaria;
                    // inmueble.Add(dtoLista);
                }
            }
            return inmobiliaria;
        }
    }
}